package com.york.tinyrpc.proto.server;

import io.vertx.core.Vertx;

/**
 * 基于Vert.x实现的Web服务器
 */
public class VertxHttpServer implements HttpServer {

    /**
     * 启动服务器
     *
     * @param port
     */
    @Override
    public void doStart(int port) {
        // 创建Vert.x服务实例,进而得到HttpServer
        io.vertx.core.http.HttpServer httpServer = Vertx.vertx().createHttpServer();

        // todo proto版本：处理请求先用硬编码方式实现
        // 监听端口，处理请求
//        httpServer.requestHandler(request -> {
//            // 处理 HTTP 请求
//            System.out.println("Received request: " + request.method() + " : " + request.uri());
//
//            // 发送 HTTP 响应
//            request.response()
//                    .putHeader("content-type", "text/plain")
//                    .end("Hello from Vert.x HTTP server!");
//        });

        // todo 这里已经封装了HttpServerHandler，直接传入即可
        httpServer.requestHandler(new HttpServerHandler());

        // 启动 HTTP 服务器并监听指定端口
        httpServer.listen(port, result -> {
            if (result.succeeded()) {
                System.out.println("Server is now listening on port " + port);
            } else {
                System.err.println("Failed to start server: " + result.cause());
            }
        });
    }
}
